import { BehaviorMask } from "GameLoop/WorldState/WorldConfig";

export const BODYPART_COST:{ [key: string]: number } = {
	"move": 50,
	"work": 100,
	"attack": 80,
	"carry":50,
	"heal": 250,
	"ranged_attack": 150,
	"tough": 10,
	"claim": 600
};
export type BODYPART_ABILITY ="attack"|"ranged_attack"|"heal"|"range_heal";
export const BODYPART_ABILITY_Map:{[key in BODYPART_ABILITY]:number}={"attack":30,"ranged_attack":10,"heal":12,"range_heal":4};

export const ExtensionCap:{[key: number]:number}={
    0:0,
    1:50,
    2:50,
    3:50,
    4:50,
    5:50,
    6:50,
    7:100,
    8:200,
}

/**
 * A mapping of role types to string constants used for naming creeps and accessing them by role
 */
 export const Roles = {
	// Civilian roles
 
	mine	:'mine',
	mineex	:'mineex',
    depo	:'depo',
	filler    : 'filler',
	claim     : 'infestor',
	manager   : 'manager',
	queen     : 'queen',
	Conveyor:"🚉",
	MoveStore:"📦",
	miniqueen     : 'miniqueen',
	scout     : 'scout',
	transport : 'transport',
	Remotetransport : 'Remotetransport',
	worker    : 'worker',
	assistworker    : 'assistworker',
	workerex    : 'workerex',
	upgrader  : 'upgrader',
	upgraderex  : '🚀',
	// combat roles
	guardMelee: 'atk',
	// guardRanged: 'mutalisk',
	melee     : 'zergling',
	ranged    : 'hydralisk',
	healer    : 'healer',

	iad:"💎",
	pb_a:"pb_a",
	pb_h:"pb_h",
	t_ra:"🏹",
	t_a:"⚔️",
	t_h:"🚑",
    t_d:"⚒️",   // 拆墙
	// testranged    : 'testranged',
	// testhealer    : 'testhealer',
	test:'test',

	defender_red:'🛡️',
	defender_blue:'🔵'
};

 
export const Setups:IRoleConfig={
    mine:{0:
            {
        		Role: "mine",
        		pattern: { work: 2, move: 1, carry: 1 },
        		constbody:{},
        		patterncount:4,
        		specialpattern:{
        			8:5,
        		}
            }
        }
  	,
	porter:{
		0:{
		Role: "porter",
		pattern: {   move: 1, carry:2 },
		constbody:{   },
		patterncount:6,
		specialpattern:{
			7:8,
			}
		}
	}
	,
	upgrader:{0:{
		Role: "upgrader",
		pattern: {move: 1, work:2 },
		constbody: {carry: 1},
		patterncount:10,
		specialpattern:{
			8:3,
		}
	}
    },
	worker:{
		        0:{
		            Role: "worker",
		            pattern: { work: 1, move: 1, carry: 1 },
		            constbody:{},
		            patterncount:15,
		            specialpattern:{}
		        },
		        1:  {
		            Role:"worker",
		            pattern: { work: 2, move: 2, carry: 1 },
		            constbody:{},
		            patterncount:10,
		            specialpattern:{}
		        },
		        2:  {
		            Role:"worker",
		            pattern: { work: 2, move: 2, carry: 1 },
		            constbody:{},
		            patterncount:10,
		            specialpattern:{}
		        },
		        3:  {
		            Role:"worker",
		            pattern: { work: 2, move: 2, carry: 1 },
		            constbody:{},
		            patterncount:10,
		            specialpattern:{}
		        },
			},
} as any
/**
 * This object contains categorized default body setups for various types of creeps
 */
// export const Setups: {
// 	[key: string]: Record<number,ICreepBody>} = {
// 	MineCreep:{0:{
// 		Role: Roles.mine,
// 		pattern: { work: 2, move: 1, carry: 1 },
// 		constbody:{},
// 		patterncount:4,
// 		specialpattern:{
// 			8:5,
// 		}}
// 	},
// 	MineCreepEx:{0:{
// 		Role: Roles.mineex,
// 		pattern: { work:4, move: 1 },
// 		constbody:{ carry: 4},
// 		patterncount:5,
// 		specialpattern:{}
//     }
// 	},
// 	WorkCreep:{
//         0:{
//             Role: Roles.worker,
//             pattern: { work: 1, move: 1, carry: 1 },
//             constbody:{},
//             patterncount:15,
//             specialpattern:{}
//         },
//         1:  {
//             Role:Roles.worker,
//             pattern: { work: 2, move: 2, carry: 1 },
//             constbody:{},
//             patterncount:10,
//             specialpattern:{}
//         },
//         2:  {
//             Role:Roles.worker,
//             pattern: { work: 2, move: 2, carry: 1 },
//             constbody:{},
//             patterncount:10,
//             specialpattern:{}
//         },
//         3:  {
//             Role:Roles.worker,
//             pattern: { work: 2, move: 2, carry: 1 },
//             constbody:{},
//             patterncount:10,
//             specialpattern:{}
//         },
// 	},
//     DepoCreep:{0:{
// 		Role: Roles.depo,
// 		pattern: { work: 23, move: 23},
// 		constbody:{carry: 4},
// 		patterncount:1,
// 		specialpattern:{}
// 	}
//     },
// 	AssistWorkCreep:{0:{
// 		Role: Roles.assistworker,
// 		pattern: { work: 1, move: 2, carry:1 },
// 		constbody:{},
// 		patterncount:12,
// 		specialpattern:{}
// 	}
//     },
// 	WorkCreepEx:{0:{
// 		Role: Roles.workerex,
// 		pattern: { work: 2, move: 2, carry: 1 },
// 		constbody:{},
// 		patterncount:10,
// 		specialpattern:{}
// 	}
//     },
// 	TransportCreep:{0:{
// 		Role: Roles.transport,
// 		pattern: {  move: 1, carry: 2 },
// 		constbody:{},
// 		patterncount:16,
// 		specialpattern:{}
// 	}
//     },
//     ManagerCreep:{0:{
// 		Role: Roles.manager,
// 		pattern: {    carry: 2 },
// 		constbody:{ move: 1},
// 		patterncount:15,
// 		specialpattern:{
// 			6:5,
// 			7:5,
// 		}
// 	}
//     },
// 	MoveStore:{0:{
// 		Role: Roles.MoveStore,
// 		pattern: {    carry: 2 },
// 		constbody:{ move: 1},
// 		patterncount:6,
// 		specialpattern:{
// 		}
// 	}
//     },
// 	RemoteTransportCreep:{0:{
// 		Role: Roles.Remotetransport,
// 		pattern: {  move: 3, carry: 6 },
// 		constbody:{work:2, move:2},
// 		patterncount:5,
// 		specialpattern:{}
// 	}
//     },
// 	QueueCreep:{0:{
// 		Role: Roles.queen,
// 		pattern: {   move: 1, carry:2 },
// 		constbody:{ },
// 		patterncount:7,
// 		specialpattern:{7:8,
// 			8:10,}
// 	}
//     },
// 	Conveyor:{0:{
// 		Role: Roles.Conveyor,
// 		pattern: {   move: 1, carry:2 },
// 		constbody:{   },
// 		patterncount:6,
// 		specialpattern:{
//             7:8,
// 			 }
// 	}
//     },
// 	MiniQueueCreep:{0:{
// 		Role: Roles.miniqueen,
// 		pattern: {   carry:2 },
// 		constbody:{ move: 1},
// 		patterncount:1,
// 		specialpattern:{
// 			7:2,
// 			8:3,
// 		}
// 	}
//     },
// 	UpgraderCreep:{0:{
// 		Role: Roles.upgrader,
// 		pattern: {move: 1, work:2 },
// 		constbody: {carry: 4},
// 		patterncount:10,
// 		specialpattern:{

// 			8:3,
// 		}
// 	}
//     },
// 	UpgraderExCreep:{0:{
// 		Role: Roles.upgraderex,
// 		pattern: {move: 1, work:3},
// 		constbody: {work: 9,carry: 1},
// 		patterncount:10,
// 		specialpattern:{}
// 	}
//     },
// 	claimCreep:{0:{
// 		Role:Roles.claim,
// 		pattern  :{ claim:1, move: 6},
// 		constbody:{},
// 		patterncount:1,
// 		specialpattern:{8:2}
// 	}
//     },
// 	ScoutCreep:{0:{
// 		Role:Roles.scout,
// 		pattern  :{ move: 1},
// 		constbody:{},
// 		patterncount:1,
// 		specialpattern:{}
// 	}
//     },
// 	Blooder: {0:{
// 		Role:Roles.guardMelee,
// 		pattern  : {attack:1,move:1},
// 		constbody:{},
// 		patterncount:10,
// 		specialpattern:{}
// 	}
//     },

// 	PbHealCreep:{0: {
// 		Role:Roles.pb_h,

//         pattern  : { heal:24,move:24 },
// 		constbody:{heal:1,move:1 },
// 		patterncount:1,
// 		specialpattern:{}
// 	}
//     },
// 	PbAttachCreep:{
//         0:
//         {
//             Role:Roles.pb_a,

//             pattern  : { attack:20,move:20 },
//             constbody:{},
//             patterncount:1,
//             specialpattern:{}
//         },
//         1:
//         {
//             Role:Roles.pb_a,

//             pattern  : { tough:4,attack:17,move:21},
//             constbody:{},
//             patterncount:1,
//             specialpattern:{}
//         },
//         2:
//         {
//             Role:Roles.pb_a,

//             pattern  : { tough:4,attack:17,move:21},
//             constbody:{},
//             patterncount:1,
//             specialpattern:{}
//         }
//     },
// 	THCreep: {
//         0:  {
//                 Role:Roles.t_h,
//                 pattern  : {ranged_attack:2 , heal:23,move:25 },
//                 constbody:{  },
//                 patterncount:1,
//                 specialpattern:{}
//             },
//         3:  {
//             Role:Roles.t_h,
//             pattern  : {tough:12,heal:26,move:10 },
//             constbody:{ ranged_attack:2 },
//             patterncount:1,
//             specialpattern:{}
//         }
//     },
// 	TACreep:{
//         0: {
//                 Role:Roles.t_a,

//                 pattern  :  {attack:25,move:25},
//                 constbody:{},
//                 patterncount:1,
//                 specialpattern:{}
//             },
//         3:{
//             Role:Roles.t_a,

//             pattern  :  {tough:12,attack:16,move:10 },
//             constbody:{attack:12},
//             patterncount:1,
//             specialpattern:{}
//         }

//     },
//     TRACreep: {
//         0:  {
//             Role:Roles.t_ra,

//             pattern  : { ranged_attack:21,heal:4 ,move:25},
//             constbody:{},
//             patterncount:1,
//             specialpattern:{}
//         },
//         3:  {
//             Role:Roles.t_ra,

//             pattern  : {tough:12,ranged_attack:12,heal:4 ,move:10 },
//             constbody:{ranged_attack:12},
//             patterncount:1,
//             specialpattern:{}
//         },
//     },
// 	DefenderRed: {0:{
// 		Role:Roles.defender_red,

//         pattern  : { attack:8,move:2 },
// 		constbody:{},
// 		patterncount:5,
// 		specialpattern:{}
// 	}
//     },
// 	DefenderBlue:{0: {
// 		Role:Roles.defender_blue,

//         pattern  : { ranged_attack:4 ,move:1},
// 		constbody:{},
// 		patterncount:10,
// 		specialpattern:{}
// 	}
//     },
//     Dismantler: {
//         0:  {
//             Role:Roles.t_d,

//             pattern  : { work:25 ,move:25,},
//             constbody:{},
//             patterncount:1,
//             specialpattern:{}
//         },
//         3:  {
//             Role:Roles.t_d,

//             pattern  : {tough:12, work:16 ,move:10,},
//             constbody:{work:12},
//             patterncount:1,
//             specialpattern:{}
//         },
//     },
// 	IADCreep: {
//         0:  {
//             Role:Roles.iad,

//             pattern  : { ranged_attack:21,heal:4 ,move:25},
//             constbody:{},
//             patterncount:1,
//             specialpattern:{}
//         },
//         3:  {
//             Role:Roles.iad,

//             pattern  : {tough:10,ranged_attack:10,heal:20 ,move:10 },
//             constbody:{ },
//             patterncount:1,
//             specialpattern:{}
//         },
//     },

// };

